import java.net.ServerSocket;
import java.net.Socket;
import java.net.*;
import java.io.*;
import java.util.*;


public class SocketServerOne {

ServerSocket socket1;
//int port = 1024;
Socket connection;
boolean first;
StringBuffer process;
String TimeStamp;
writeToFileClass wf = new writeToFileClass();
public String portListen(int port)
{
   String returnString = "Nothing found.";
   
   InputStream sockInput = null;
   OutputStream sockOutput = null;
   
   try{
     socket1 = new ServerSocket(port);
     
     while (true) 
  {
  try
  {
   connection = socket1.accept();
   System.err.println("Have accepted new socket.");
   sockInput = connection.getInputStream();
   sockOutput = connection.getOutputStream();
  }
  catch (IOException e){
   e.printStackTrace(System.err);
  }

  // Do something with the socket - read bytes from the
  // socket and write them back to the socket until the
  // other side closes the connection.
  handleConnection(sockInput, sockOutput);

  // Now we close the socket.
  try {
   System.err.println("Closing socket.");
   connection.close();
  }
  catch (Exception e){
   System.err.println("Exception while closing socket.");
   e.printStackTrace(System.err);
  }

    }
     
   }
   catch (IOException e) {}     
   return returnString;
}
    public void handleConnection(InputStream sockInput, OutputStream sockOutput) {
        while(true) {
            byte[] buf=new byte[1024];
            int bytes_read = 0;
            try {
                // This call to read() will wait forever, until the
                // program on the other side either sends some data,
                // or closes the socket.
                bytes_read = sockInput.read(buf, 0, buf.length);

                // If the socket is closed, sockInput.read() will return -1.
                if(bytes_read < 0) {
                    System.err.println("Tried to read from socket, read() returned < 0,  Closing socket.");
                    return;
                }
                /*System.err.println("Received "+bytes_read
                                   +" bytes, sending them back to client, data="
                                   +(new String(buf, 0, bytes_read)));*/
                String strTxt = new String(buf, 0, bytes_read);
                
                if(strTxt.indexOf("|PPD") > -1)
                {                  
                  wf.readData(strTxt);
                }
                
                sockOutput.write(buf, 0, bytes_read);
                // This call to flush() is optional - we're saying go
                // ahead and send the data now instead of buffering
                // it.
                sockOutput.flush();
            }
            catch (Exception e){
                System.err.println("Exception reading from/writing to socket, e="+e);
                e.printStackTrace(System.err);
                return;
            }
        }

    }

}